Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

354
Visualizações
¿Cómo funciona "for ( ; *p; ++p) *p = tolower(*p);" trabajo en c?

Soy bastante nuevo en la programación y me preguntaba por qué este código:

 for ( ; *p; ++p) *p = tolower(*p);

funciona para reducir un caso de cadena en c, cuando p apunta a una cadena?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

En general, este código:

 for ( ; *p; ++p) *p = tolower(*p);

no

” funciona para bajar un caso de cadena en c, cuando p apunta a una cadena?

Funciona para ASCII puro, pero dado que char generalmente es un tipo con signo, y dado que tolower requiere un argumento no negativo (excepto el valor especial EOF ), la pieza en general tendrá un comportamiento indefinido.

Para evitar eso, envíe el argumento a unsigned char , así:

 for ( ; *p; ++p) *p = tolower( (unsigned char)*p );

Ahora puede funcionar para codificaciones de un solo byte como Latin-1, siempre que haya configurado la configuración regional correcta a través de setlocale , por ejemplo, setlocale( LC_ALL, "" ); . Sin embargo, tenga en cuenta que la codificación UTF-8 muy común no es un solo byte por carácter. Para tratar con texto UTF-8, puede convertirlo en una cadena ancha y en minúsculas.


Detalles:

  • *p es una expresión que denota el objeto al que apunta p , presumiblemente un char .

  • Como condición de continuación para el ciclo for , cualquier valor de char distinto de cero que denota *p , tiene el efecto de True lógico, mientras que el valor de char cero al final de la cadena tiene el efecto de False lógico, finalizando el ciclo.

  • ++p avanza el puntero para apuntar al siguiente char .

over 4 years ago · Santiago Trujillo Relatório

0

Para desmarcar, supongamos que p es un puntero a un char y justo antes del bucle for , apunta al primer carácter de una cadena.

En C, las cadenas generalmente se modelan mediante un conjunto de valores de caracteres char con un 0 final agregado al final que actúa como el terminador nulo .

*p se evaluará como 0 una vez que se alcance el terminador nulo de la cadena. Entonces el bucle for saldrá. (La segunda expresión en el bucle for actúa como prueba de terminación).

++p avanza al siguiente carácter de la cadena.

*p = tolower(*p) establece ese carácter en minúsculas.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda